#импорт библиотек
from PyQt5.QtWidgets import *
from PyQt5 import QtCore, QtGui
from PyQt5.QtGui import *
from PyQt5.QtCore import *
import random
import sys


class Window(QMainWindow):

	def __init__(self):
		super().__init__()

		# настройка заголовка
		self.setWindowTitle("Python ")

		# настройка координат
		self.setGeometry(100, 100, 340, 350)

		# вызов метода
		self.UiComponents()

		# отображение всех виджетов
		self.show()

		# номер
		self.number = 0

	# метод определения компонентов
	def UiComponents(self):

		# создание заголовка
		head = QLabel("Игра угадай число", self)

		# настройка координат для заголовка
		head.setGeometry(20, 10, 300, 60)

		# font
		font = QFont('Время', 14)
		font.setBold(True)
		font.setItalic(True)
		font.setUnderline(True)

		# установка шрифта для заголовка
		head.setFont(font)

		# настройка выравнивания заголовка
		head.setAlignment(Qt.AlignCenter)

		# настройка цветового эффекта заголовка
		color = QGraphicsColorizeEffect(self)
		color.setColor(Qt.darkCyan)
		head.setGraphicsEffect(color)

		#создание ярлыка, который будет содержать информацию creating a label that will give the info
		self.info = QLabel("Приветстую!", self)

		#  установка координат для информационной метки
		self.info.setGeometry(40, 85, 260, 60)

		#создание многострочной информационной метки 
		self.info.setWordWrap(True)

		# настройка шрифта и выравнивания
		self.info.setFont(QFont('Время', 13))
		self.info.setAlignment(Qt.AlignCenter)

		#настройка таблицы стилей 
		self.info.setStyleSheet("QLabel"
								"{"
								"border : 2px solid black;"
								"background : lightgrey;"
								"}")

		#создаем поле для вращения, чтобы задать число 
		self.spin = QSpinBox(self)

		# диапазон настройки для блока последовательности
		self.spin.setRange(1, 20)

		# настройка координат для блока последовательности
		self.spin.setGeometry(120, 170, 100, 60)

		# настройка выравнивания и шрифта
		self.spin.setAlignment(Qt.AlignCenter)
		self.spin.setFont(QFont('Время', 15))

		# создаем кнопку для проверки угаданного номера
		check = QPushButton("Проверить", self)

		# настройка координат с помощью кнопки
		check.setGeometry(130, 235, 120, 30)

		# добавление действия к кнопке проверки
		check.clicked.connect(self.check_action)

		# создание кнопки
		start = QPushButton("старт", self)
		start.setGeometry(65, 280, 100, 40)

		#  кнопка сброса для сброса игры
		reset_game = QPushButton("отмена", self)

		# настройка координат нажатием кнопки
		reset_game.setGeometry(175, 280, 100, 40)

		# настройка цветового эффекта
		color_red = QGraphicsColorizeEffect()
		color_red.setColor(Qt.red)
		reset_game.setGraphicsEffect(color_red)

		color_green = QGraphicsColorizeEffect()
		color_green.setColor(Qt.darkBlue)
		start.setGraphicsEffect(color_green)

		# добавление действия к кнопке
		start.clicked.connect(self.start_action)
		reset_game.clicked.connect(self.reset_action)

	def start_action(self):

		# делаем ярлык зеленым
		self.info.setStyleSheet("QLabel"
								"{"
								"border : 2px solid black;"
								"background : lightgrey;"
								"}")

		# создание случайного числа
		self.number = random.randint(1, 20)

		# установка текста для информации
		self.info.setText("Попробуйте угадать число от 1 до 20")


	def check_action(self):

		# получаем номер
		user_number = self.spin.value()

		# проверьте значение
		if user_number == self.number:

			# установка текста для информационной метки
			self.info.setText("Правильно")
			# делаем ярлык зеленым
			self.info.setStyleSheet("QLabel"
									"{"
									"border : 2px solid black;"
									"background : lightgreen;"
									"}")

		elif user_number < self.number:

			# даем подсказку
			self.info.setText("Ваш номер меньше")

		else:

			#  даем подсказку
			self.info.setText("Ваш номер больше")


	def reset_action(self):
		# делаем ярлык зеленым
		self.info.setStyleSheet("QLabel"
								"{"
								"border : 2px solid black;"
								"background : lightgrey;"
								"}")

		# установка текста для информационной метки
		self.info.setText("Welcome")





# создать приложение pyqt5
App = QApplication(sys.argv)

# создаем экземпляр нашего окна
window = Window()

# запустите приложение
sys.exit(App.exec())
